﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using MaquinaJMG.GUI.Contrato;
using Datos.Entidades;
using MaquinaJMG.GUI.Contrato;
using Datos.Entidades.FabricaEntidades;
using Logica.Comandos;
using Logica.FabricaLogica;
using Logica.Comandos.ComandosAdministracionEvento;
using Logica.Comandos.ComandosAdministracionApuesta;
namespace MaquinaJMG.GUI.Presentador
{
    class PresentadorApuesta
    {
        private IContratoApuesta _EventoCategoria;
        // private IContratoAgregarParticipante _creacionParticipante;
        private List<Entidad> misEventosCategorias = new List<Entidad>();
        private Entidad aaa = new Entidad();
        private Entidad aaaa = new Entidad();
        private Vista.Apuesta apuesta;

        public PresentadorApuesta(Vista.Apuesta apuesta)
        {
            // TODO: Complete member initialization
            this.apuesta = apuesta;
        }
     

        // <summary>
        /// procedimiento que consulta participante
        /// </summary>
        /// <param name="usuario">Participante a seleccionar dado evento</param>
        public List<Entidad> ConsultarParticipante2(int id)
        {

            Comando comando = FabricaComandoApuesta.ObtenerDaoSqlServerApuesta();
            comando.Id = id;
            (comando as ComandoBuscarParticipanteApuesta).Ejecutar();
            misEventosCategorias = comando.ListaEntidad;
            return misEventosCategorias;
        }

        // <summary>
        /// procedimiento que obtiene nombre de evento
        /// </summary>
        /// <param name="usuario">Evento dado id</param>

        public string obtenerCategoriaNOmbre2(int idd)
        {
            Comando comando = FabricaComandoEvento.ObtenerComandoBuscarEventoParticipante3();
            comando.Id = idd;
            (comando as ComandoBuscarEventoParticipante3).Ejecutar();
            aaaa = comando.Entidad;
            string id = (aaaa as Evento).NombreEvento;
            return id;
        }


        // <summary>
        /// procedimiento que obtiene posiciones de eventos
        /// </summary>
        /// <param name="usuario">Posiciones a seleccionar dado Id_Evento</param>

        public int obtenerCategoriaNOmbre3(int idd)
        {
            Comando comando = FabricaComandoEvento.ObtenerComandoBuscarEventoParticipante4();
            comando.Id = idd;
            (comando as ComandoBuscarEventoParticipante4).Ejecutar();
            aaaa = comando.Entidad;
            int id = (aaaa as Evento).Posiciones;
            return id;
        }

        // <summary>
        /// procedimiento que obtiene id_categoria de una categoria
        /// </summary>
        /// <param name="usuario">Categoria a seleccionar dado nombre</param>

        public int obtenerCategoriaNOmbre(string nomb)
        {
            Comando comando = FabricaComandoEvento.ObtenerComandoBuscarEventoNombre();
            comando.Tipo = nomb;
            (comando as ComandoBuscarEventoNombre).Ejecutar();
            aaa = comando.Entidad;
            int id = (aaa as Evento).Id_Evento;
            return id;
        }

        // <summary>
        /// procedimiento que inserta Acceso de apuesta
        /// </summary>
        /// <param name="usuario">Acceso insertado</param>
        public void InsertarAccesoApuesta(int Posid, int id, int id1, int id2, int id3)
        {

            Entidad crearEvento = FabricaEntidades.ObtenerEvento();
            

            (crearEvento as Evento).Monto = Posid;
            (crearEvento as Evento).Puntos = id;
            // (agregarcat as Participante).Tope = int.Parse(_EventoParticipante.Tope.Text);
            //(agregarcat as Participante).Relacion = int.Parse(_EventoParticipante.Relacion.Text);
            (crearEvento as Evento).FK_Id_Evento = id1;
            (crearEvento as Evento).FK_Id_Maquina = id2;
            (crearEvento as Evento).Id_HistorialParticipante = id3;
            Comando comandoEvento = FabricaComandoApuesta.ObtenerComandoInsertarAccesoApuesta();
            comandoEvento.Entidad = crearEvento;
            Boolean respuestaUsuario = false;

            (comandoEvento as ComandoCrearApuesta).Ejecutar();
            respuestaUsuario = comandoEvento.Flag;

        }

        // <summary>
        /// procedimiento que obtiene id Maquina       /// </summary>
        /// <param name="usuario">Maquina Buscada</param>
        
        public int  ConsultarMaquina()
        {
            Comando comando = FabricaComandoApuesta.ObtenerComandoMostrarMaquina();
            comando.Ejecutar();
            misEventosCategorias = comando.ListaEntidad;
            int id = (misEventosCategorias.ElementAt(0) as Maquina).IdMaquina;
            return id;
            
        }



    }
}
